
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author sky
 * excel根据自身规则转换成批量的sql
 * @create 2019-07-04 10:38
 **/
public class main {

    public static void main(String[] args) {
        System.out.println("开始咯！！");
        /***********************************************************   请根据注释修改以下内容   ************************************************************************************/
        //excel 路径
        String filePath = "C:\\Users\\DELL\\Documents\\baiyulanAll.csv";
        //输出sql文本的txt路径
        String outPut = "C:\\Users\\DELL\\Documents\\outputBai111.txt";
        //从哪行开始读(第一行就为1)
        int startRow = 1;
        //到哪行结束(默认为0，也就是完整读完整个excel)
        int endRow = 0;
        //哪页(默认1，也就是第一页)
        int sheetNum = 1;
        //哪些列(输入列的序号从1开始)
        int[] selectColumn = {1,2,3,4,5,6,7,8,9,10};
        /*   模版SQL
         *  例：selectColumn = {1,3,5};
         *      sqlRoot ="select ${1}$,${3}$ from user where id='${2}$'";
         *    ${1}$ 表示 selectColumn中的第一个元素    ${2}$ 表示 selectColumn中的第二个元素
         */
        String sqlRoot ="INSERT INTO `bms_activity`.`t_baiyulan`(`id`, `name`, `sex`, `birthday`, `phone`, `group`, `date`, `time`, `address`, `song`, `img`, `exam_path`) VALUES ('${1}$', '${2}$', '${3}$', '${4}$', '${5}$', '${6}$', '${8}$', '${9}$', '${10}$', '${7}$', NULL, NULL)";




        /***********************************************************            End                 ****************************************** ***********************************/



        //保存文件读取后的结果
        List list = new ArrayList<List<String>>();
        //列是从0开始的，自行转换列号
        for(int i = 0;i<selectColumn.length;i++ ){
            selectColumn[i] -=1;
        }
        //sheet是从0开始的，减一
        sheetNum -= 1;

        FileOperation fileOp = new FileOperation();
        switch (filePath.substring(filePath.lastIndexOf(".") + 1)) {
            case "xls":
                list = fileOp.rerdXls(filePath, sheetNum, startRow, endRow, selectColumn);
                System.out.println(list.size());
                break;
            case "xlsx":

                list = fileOp.rerdXlsx(filePath, sheetNum, startRow, endRow, selectColumn);
                break;
            case "csv":
                list = fileOp.rerdCsv(filePath, startRow, endRow, selectColumn);

                break;
            default:
                System.out.println("文件类型错误");
                return;
        }

        if (list.size() == 0){
            System.out.println("文件读取长度为0，读取文件失败");
            return;
        }

        //生成SQL
        String sqlAll = fileOp.creatSQL(list,sqlRoot,selectColumn);

        //文件写入咯（*__*）
       try {
            fileOp.writeFile(sqlAll,outPut);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }



}
